<?php
/*
 * Datei: modify_department.php
 * Funktion: Modifiziert einen neuen Abteilungs-Datensatz in der Datenbank.
 *           Beinhaltet zudem auch das HTML-Formular zur Eingabe der
 *           Abteilungsdaten.
 * Autor:    Alexander Palmer
 * Version:  04.03.2013
 */
echo '';
require_once ('../../lib/database.inc.php');
require_once ('../../lib/html.inc.php');

// Wurde der Button mit dem Name-Attribut 'submit' angeklickt? Wenn ja, dann$
// wurde ein POST-Request ausgelöst und der Button an das POST-Array übergeben.
if (isset($_POST['submit'])) {

  // Einlesen des Eingabefeldes mit dem name-Attribut 'description'
  $dp = $_POST['description'];

  // Einlesen des versteckten (hidden) Eingabefelds mit dem name-Attribut
  // id. 
  // Es ist wichtig zu verstehen, dass dieser Variablenname auch im Bereich
  // des erstmaligen Aufrufs (siehe ca. Zeile 114, 
  // if(!isset($_POST['submit'])) ) benutzt wird. Denn einerseits wird 
  // $idDp in Form eines GET-Parameters beim ersten Aufruf des Skripts 
  // geliefert, in einem hidden-Field aber bei jedem Post Transport ebenfalls
  // transportiert. Somit ist diese Variable für den GET sowie den POST
  // Request von grösster Wichtigkeit.
  $idDp = $_POST['id'];

  // Wenn die Variable $dp leer ist (wird geprüft mit der Funktion empty),
  // oder die Länge der eingegebenen Abteilungsbezeichnung kleiner oder
  // gleich eins Zeichen ist, werden zwei Error-Flags gesetzt.
  if (empty($dp) || strlen($dp) <= 1) {
    $error = true;
    $errorDp = true;
  }

  // Wenn kein Error-Flag ($error) gesetzt wurde, dann weitergehen, ansonsten
  // wird das Formular gleich wieder angezeigt un der folgende PHP-Code
  // übersprungen.
  if (!isset($error)) {
    // Verbindung mit dem Datenbankserver herstellen
    $link = connectDB();

    // Vorbereitung des SQL-Statements in einer Variable:
    // Zähle alle Datensätze, welche gleich dem Inhalt der Variable $dp
    // sind.
    $sql = "SELECT COUNT(*) as count FROM 
            department WHERE description='$dp'";

    // Anfrage (Query) an Datenbank senden und Antwort der Datenbank in
    // der Variable $result speichern.
    $result = mysqli_query($link, $sql);

    // Es kann aufgrund der Abfrage nur einen Datensatz als Antwort geben
    // Daher können wir auf eine Schleife verzichten und diesen einen
    // Datensatz in ein Array umwandeln. 
    $row = mysqli_fetch_array($result);

    // Wenn der Wert 0 geliefert wird, bedeutet dies, dass die 
    // eingegebene Bezeichung in der Tabelle 'department' noch nicht 
    // existiert. Somit darf eine neue Abteilung erstellt werden.
    if ($row['count'] == '0') {

      // Vorbereitung des SQL-Statements, um einen neuen Datensatz
      // in der Tabelle department zu erstellen.
      $sql = "UPDATE department SET description='$dp' WHERE id='$idDp'";

      // Übergabe der Anfrage (Query) an den Datenbankserver
      mysqli_query($link, $sql);

      // Das Skript ruft automatisch die Datei read.php auf.
      header('Location: show_department.php');
    } else {

      // Falls doch schon ein Datensatz mit der gleichen Bezeichnung
      // exisitert, wird ein Error-Flag gesetzt. Dieses wird weiter unten
      // dann benutzt, um bei Bedarf eine Fehlermeldung auszugeben.
      $errorExists = true;
    }
  }
}
?>
<?php generateHeader('Abteilung modifizieren', '../css/default.css'); ?>
<h1>Bestehende Abteilung modifizieren</h1>
<?php
// Falls bei der Überprüfung der Eingabe (siehe oben) bemerkt wurde, dass
// ein Eingabefehler vorliegt, wurde ja ein error-Flag gesetzt. Falls dieses
// existiert (isset) wird eine entsprechende Fehlermeldung ausgegeben.
if (isset($error)) {
  echo '<p class="error">Nicht alle Felder sind korrekt ausgef&uuml;llt<p>';
}

// Falls bei der Überprüfung, ob eine Abteilung in der Datenbank existiert, 
// festgestellt wurde, dass dem so ist, wird auch hier eine entsprechende
// Fehlermeldung ausgegegeben.
if (isset($errorExists)) {
  echo '<p class="error">Die Abteilung ' . $dp . ' exisitiert schon. 
                    Bitte w&auml;hlen Sie eine andere Bezeichnung!<p>';
}

// Wenn die Seite das erste Mal aufgerufen wird, werden die folgenden
// Aktionen erfüllt
if (!isset($_POST['submit'])) {
  // Beschaffen des Primary Key zur Beschaffung des zu modifizierenden
  // Datensatzes
  $idDp = $_GET['id'];

  // Verbindung zum Datenbankserver herstellen
  $link = connectDB();

  // Nun beschaffen wir uns den zu modifizierenden Datensatz mit der Hilfe
  // des Wertes in $idDp aus der Datenbank
  $sql = "SELECT id, description FROM department WHERE id=$idDp";

  // Das SQL-Statement an die Datenbank senden und Antwort auffangen
  $result = mysqli_query($link, $sql);

  // Es kann nur einen geben: Damit ist der Datensatz gemeint. Daher
  // können wir auf die Schleife verzichten und verwandeln den 
  // Datensatz aus der Datenbank in ein Array mit dem Namen $row.
  $row = mysqli_fetch_array($result);

  $dp = $row['description'];
}
?>
<div id="content">
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <table border="1" width="400">
      <tr <?php if (isset($errorDp)) echo ' class="error" '; ?>>
        <td>Abteilungsbezeichnung:</td>
        <td>
          <input type="text" value="<?php echo $dp; ?>" 
                 name="description" />
        </td>
      </tr>

      <tr>
        <td><input type="hidden" name="id" 
                   value="<?php echo $idDp; ?>" /></td>
        <td>
          <input type="submit" value="speichern" 
                 name="submit" />
        </td>
      </tr>
    </table>
  </form>
</div>
<div id="navigation">
  <p><a href="show_department.php">Alle Abteilungen anzeigen</a></p>
</div>
<?php generateFooter(); ?>